package main

import (
	"fmt"
	"sort"
)

// 查找中位数
// 给定两个大小分别为 m 和 n 的正序（从小到大）数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。
//
// 算法的时间复杂度应该为 O(log (m+n)) 。
//
// 示例 1：
//
// 输入：nums1 = [1,3], nums2 = [2]
// 输出：2.00000
// 解释：合并数组 = [1,2,3] ，中位数 2
// 示例 2：
//
// 输入：nums1 = [1,2], nums2 = [3,4]
// 输出：2.50000
// 解释：合并数组 = [1,2,3,4] ，中位数 (2 + 3) / 2 = 2.5

func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {
	arrays := append(nums1, nums2...)
	sort.Ints(arrays)
	return findMedian(arrays)
}

func findMedian(nums []int) float64 {
	total := len(nums)
	n := 0
	if total > 1 {
		n = total >> 1
	}
	if total%2 == 0 {
		return (float64)(nums[n-1]+nums[n]) / 2
	} else {
		return (float64)(nums[n])
	}
}

func main() {
	fmt.Println(findMedianSortedArrays([]int{}, []int{1}))
	fmt.Println(findMedianSortedArrays([]int{1, 2}, []int{3, 4}))
}
